//! 条件控制示例
//!
//! Rust 中的条件控制使用 if 表达式实现

/// 基础 if 表达式
///
/// if 是一个表达式，它可以返回一个值
#[test]
pub fn if_basics() {
    let number = 3;

    // 最简单的 if
    if number < 5 {
        println!("条件为真");
    }

    // if-else 结构
    if number % 4 == 0 {
        println!("数字能被4整除");
    } else if number % 3 == 0 {
        println!("数字能被3整除");
    } else {
        println!("数字不能被4或3整除");
    }
}

/// 使用 if 表达式返回值
///
/// 因为 if 是一个表达式，所以可以在 let 语句的右侧使用
#[test]
pub fn if_as_expression() {
    let condition = true;

    // 使用 if 表达式初始化变量
    let number = if condition { 5 } else { 6 };

    println!("if 表达式的结果: {number}");

    // 注意：if 分支的返回值类型必须相同
    let condition = false;
    let number = if condition {
        10 // 必须是与 else 分支相同类型的值
    } else {
        20 // 必须是与 if 分支相同类型的值
    };

    println!("另一个 if 表达式的结果: {number}");
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_if_basics() {
        if_basics();
    }

    #[test]
    fn test_if_as_expression() {
        if_as_expression();
    }
}
